import request from './request'

/**
 * 系统管理API接口
 */

// ==================== 用户管理相关 ====================

/**
 * 获取用户列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.keyword - 搜索关键词
 * @param {string} params.status - 状态筛选
 * @param {string} params.role - 角色筛选
 * @returns {Promise}
 */
export function getUserList(params = {}) {
  return request({
    url: '/system/api/users/',
    method: 'get',
    params
  })
}

/**
 * 创建用户
 * @param {Object} data - 用户数据
 * @param {string} data.username - 用户名
 * @param {string} data.email - 邮箱
 * @param {string} data.realName - 真实姓名
 * @param {string} data.phone - 手机号
 * @param {string} data.role - 角色
 * @param {string} data.password - 密码
 * @returns {Promise}
 */
export function createUser(data) {
  return request({
    url: '/system/api/users/create/',
    method: 'post',
    data
  })
}

/**
 * 更新用户信息
 * @param {number} id - 用户ID
 * @param {Object} data - 用户数据
 * @returns {Promise}
 */
export function updateUser(id, data) {
  return request({
    url: `/system/api/users/${id}/update/`,
    method: 'put',
    data
  })
}

/**
 * 删除用户
 * @param {number} id - 用户ID
 * @returns {Promise}
 */
export function deleteUser(id) {
  return request({
    url: `/system/api/users/${id}/delete/`,
    method: 'delete'
  })
}

// 切换用户状态
export function toggleUserStatus(id) {
  return request({
    url: `/system/api/users/${id}/toggle-status/`,
    method: 'put'
  })
}

// 重置用户密码
export function resetUserPassword(id) {
  return request({
    url: `/system/api/users/${id}/reset-password/`,
    method: 'post'
  })
}

/**
 * 批量删除用户
 * @param {Array} ids - 用户ID数组
 * @returns {Promise}
 */
export function batchDeleteUsers(ids) {
  return request({
    url: '/api/system/users/batch-delete',
    method: 'post',
    data: { ids }
  })
}

/**
 * 启用/禁用用户
 * @param {number} id - 用户ID
 * @param {string} status - 状态 (active/disabled)
 * @returns {Promise}
 */
// 原有的toggleUserStatus函数被移除，因为我们已经在上面重新定义了

// 原有的resetUserPassword函数被移除，因为我们已经在上面重新定义了

/**
 * 获取用户操作日志
 * @param {number} id - 用户ID
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getUserLogs(id, params = {}) {
  return request({
    url: `/api/system/users/${id}/logs`,
    method: 'get',
    params
  })
}

// ==================== 角色管理相关 ====================

/**
 * 获取角色列表
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getRoleList(params = {}) {
  return request({
    url: '/system/api/roles/',
    method: 'get',
    params
  })
}

/**
 * 创建角色
 * @param {Object} data - 角色数据
 * @param {string} data.name - 角色名称
 * @param {string} data.code - 角色代码
 * @param {string} data.description - 角色描述
 * @returns {Promise}
 */
export function createRole(data) {
  return request({
    url: '/system/api/roles/create/',
    method: 'post',
    data
  })
}

/**
 * 更新角色信息
 * @param {number} id - 角色ID
 * @param {Object} data - 角色数据
 * @returns {Promise}
 */
export function updateRole(id, data) {
  return request({
    url: `/system/api/roles/${id}/update/`,
    method: 'put',
    data
  })
}

/**
 * 删除角色
 * @param {number} id - 角色ID
 * @returns {Promise}
 */
export function deleteRole(id) {
  return request({
    url: `/system/api/roles/${id}/delete/`,
    method: 'delete'
  })
}

/**
 * 获取角色权限
 * @param {number} id - 角色ID
 * @returns {Promise}
 */
export function getRolePermissions(id) {
  return request({
    url: `/system/api/roles/${id}/permissions/`,
    method: 'get'
  })
}

/**
 * 设置角色权限
 * @param {number} id - 角色ID
 * @param {Array} permissions - 权限ID数组
 * @returns {Promise}
 */
export function setRolePermissions(id, permissions) {
  return request({
    url: `/system/api/roles/${id}/assign-permissions/`,
    method: 'post',
    data: { permission_ids: permissions }
  })
}

// ==================== 权限管理相关 ====================

/**
 * 获取权限列表
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getPermissionList(params = {}) {
  return request({
    url: '/system/api/permissions/',
    method: 'get',
    params
  })
}

/**
 * 获取权限树
 * @returns {Promise}
 */
export function getPermissionTree() {
  return request({
    url: '/system/api/permissions/?format=tree',
    method: 'get'
  })
}

/**
 * 创建权限
 * @param {Object} data - 权限数据
 * @param {string} data.name - 权限名称
 * @param {string} data.code - 权限代码
 * @param {string} data.module - 所属模块
 * @param {string} data.type - 权限类型
 * @returns {Promise}
 */
export function createPermission(data) {
  return request({
    url: '/system/api/permissions/create/',
    method: 'post',
    data
  })
}

/**
 * 更新权限信息
 * @param {number} id - 权限ID
 * @param {Object} data - 权限数据
 * @returns {Promise}
 */
export function updatePermission(id, data) {
  return request({
    url: `/system/api/permissions/${id}/update/`,
    method: 'put',
    data
  })
}

/**
 * 删除权限
 * @param {number} id - 权限ID
 * @returns {Promise}
 */
export function deletePermission(id) {
  return request({
    url: `/system/api/permissions/${id}/delete/`,
    method: 'delete'
  })
}

// ==================== 菜单管理相关 ====================

/**
 * 获取菜单树
 * @returns {Promise}
 */
export function getMenuTree() {
  return request({
    url: '/system/api/menus/tree/',
    method: 'get'
  })
}

/**
 * 获取菜单列表
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getMenuList(params = {}) {
  return request({
    url: '/system/api/menus/',
    method: 'get',
    params
  })
}

/**
 * 创建菜单
 * @param {Object} data - 菜单数据
 * @param {string} data.title - 菜单标题
 * @param {string} data.path - 路由路径
 * @param {string} data.component - 组件路径
 * @param {number} data.parentId - 父菜单ID
 * @returns {Promise}
 */
export function createMenu(data) {
  return request({
    url: '/system/api/menus/create/',
    method: 'post',
    data
  })
}

/**
 * 更新菜单信息
 * @param {number} id - 菜单ID
 * @param {Object} data - 菜单数据
 * @returns {Promise}
 */
export function updateMenu(id, data) {
  return request({
    url: `/system/api/menus/${id}/update/`,
    method: 'put',
    data
  })
}

/**
 * 删除菜单
 * @param {number} id - 菜单ID
 * @returns {Promise}
 */
export function deleteMenu(id) {
  return request({
    url: `/system/api/menus/${id}/delete/`,
    method: 'delete'
  })
}

// ==================== 系统监控相关 ====================

/**
 * 获取系统状态
 * @returns {Promise}
 */
export function getSystemStatus() {
  return request({
    url: '/api/system/monitor/status',
    method: 'get'
  })
}

/**
 * 获取系统性能指标
 * @param {Object} params - 查询参数
 * @param {string} params.timeRange - 时间范围
 * @returns {Promise}
 */
export function getSystemMetrics(params = {}) {
  return request({
    url: '/api/system/monitor/metrics',
    method: 'get',
    params
  })
}

/**
 * 获取系统日志
 * @param {Object} params - 查询参数
 * @param {string} params.level - 日志级别
 * @param {string} params.module - 模块名称
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @returns {Promise}
 */
export function getSystemLogs(params = {}) {
  return request({
    url: '/api/system/monitor/logs',
    method: 'get',
    params
  })
}

/**
 * 清空系统日志
 * @returns {Promise}
 */
export function clearSystemLogs() {
  return request({
    url: '/api/system/monitor/logs',
    method: 'delete'
  })
}

/**
 * 获取在线用户列表
 * @returns {Promise}
 */
export function getOnlineUsers() {
  return request({
    url: '/api/system/monitor/online-users',
    method: 'get'
  })
}

/**
 * 强制用户下线
 * @param {string} sessionId - 会话ID
 * @returns {Promise}
 */
export function forceUserOffline(sessionId) {
  return request({
    url: `/api/system/monitor/online-users/${sessionId}/offline`,
    method: 'post'
  })
}

// ==================== 页面结构相关 ====================

/**
 * 获取页面结构信息
 * @returns {Promise}
 */
export function getPageStructure() {
  return request({
    url: '/api/system/page-structure',
    method: 'get'
  })
}

/**
 * 获取路由配置
 * @returns {Promise}
 */
export function getRouteConfig() {
  return request({
    url: '/api/system/routes',
    method: 'get'
  })
}

/**
 * 导出页面结构
 * @returns {Promise}
 */
export function exportPageStructure() {
  return request({
    url: '/api/system/page-structure/export',
    method: 'get',
    responseType: 'blob'
  })
}

// ==================== 系统配置相关 ====================

/**
 * 获取系统配置
 * @returns {Promise}
 */
export function getSystemConfig() {
  return request({
    url: '/api/system/config',
    method: 'get'
  })
}

/**
 * 更新系统配置
 * @param {Object} data - 配置数据
 * @returns {Promise}
 */
export function updateSystemConfig(data) {
  return request({
    url: '/api/system/config',
    method: 'put',
    data
  })
}

/**
 * 获取系统信息
 * @returns {Promise}
 */
export function getSystemInfo() {
  return request({
    url: '/api/system/info',
    method: 'get'
  })
}
